﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CharmL {
    public class Paramenters {
        //publics vars
        //public static double MINSUP_PER { get; set; }
        //public static int MINSUPPORT { get; set; }
        //public static int MINCONF { get; set; }
        //public static int DBASE_MAXITEM { get; set; }
        //public static int DBASE_NUM_TRANS { get; set; }
        public static int max_closed_len { get; set; } //max length of closed itemset
        public static bool output { get; set; }
        public static bool output_idlist { get; set; }
        public static bool self_rules_only { get; set; }
        public static bool conditional_self_rules { get; set; }
        public static bool mingen_only { get; set; }
        public static bool check_constraints { get; set; }
        public static bool output_lattice { get; set; }
        public static bool rulegen { get; set; }
        public static bool print_rules { get; set; }

        public static string infile { get; set; }
        public static string consfile { get; set; }
        public static string outfile { get; set; }
        public static diff_vals diff_type { get; set; }
        public static diff_vals max_diff_type { get; set; }
        public static sort_vals sort_type { get; set; }
        public static alg_vals alg_type { get; set; }
        public static closed_vals closed_type { get; set; }
        public static prune_vals prune_type { get; set; }
        public static mingen_vals mingen_type { get; set; }
        //public ofstream outfile;

        static Paramenters() {
            //MINSUP_PER = 0;
            //MINSUPPORT = -1;
            //MINCONF = 0;
            max_closed_len = int.MaxValue;

            //default flags
            output = false; //don't print freq itemsets
            output_idlist = false; //don't print idlist
            rulegen = false;
            print_rules = false;
            output_lattice = false;
            self_rules_only = false;
            conditional_self_rules = false;
            mingen_only = false;
            check_constraints = false;

            diff_type = diff_vals.diff2; //default is diffset2 mode
            max_diff_type = diff_vals.nodiff; //deafult is to use tidsets for maxtest
            sort_type = sort_vals.incr; //default is to sort in increasing order
            alg_type = alg_vals.charm; //default is to find closed freq patterns
            closed_type = closed_vals.cmax; //default is to eliminate non-closed
            //closed_type = closed_vals.chash;
            prune_type = prune_vals.noprune; //default no pruning
            mingen_type = mingen_vals.minhitset;
            //            double MINSUP_PER = 0;
            //int MINSUPPORT=-1;
            //double MINCONF = 0;
            //int DBASE_MAXITEM;
            //int DBASE_NUM_TRANS;
            //int max_closed_len = numeric_limits<int>::max();

            ////default flags
            //bool output = false; //don't print freq itemsets
            //bool output_idlist = false; //don't print idlist
            //bool rulegen = false;
            //bool print_rules = false;
            //bool output_lattice = false;
            //bool self_rules_only = false;
            //bool conditional_self_rules = false;
            //bool mingen_only = false;
            //bool check_constraints = false;

            //double rulegen_time, mingen_time;

            //ofstream outfile;

            //diff_vals diff_type = diff2; //default is diffset2 mode
            //diff_vals max_diff_type = nodiff; //deafult is to use tidsets for maxtest
            //sort_vals sort_type = incr; //default is to sort in increasing order
            //alg_vals alg_type = charm; //default is to find closed freq patterns
            //closed_vals closed_type = cmax; //default is to eliminate non-closed
            //prune_vals prune_type = noprune; //default no pruning
            //mingen_vals mingen_type = minhitset;
        }
    }
}
